class Modelo  {
	//Variável de istância, vai dentro do objeto que da classe Modelo
	int valor;
	
	public void setValor(int value) {
		//variável local "value" só existe durante a execução do método setValor
		System.out.println("Executando setValor. Variaveis:\n Local: value: "
			+ value + "\nInstancia: valor: " + valor); 
		
		//Demonstração de como ver o escopo em que as variáveis locais funcionam)
		this.valor = value;
		this.valor = multiplicaValor(2);
		System.out.println("Valor final: " + this.valor);
	}
	
	public int getValor() {
		return this.valor;
	}
	
	public int multiplicaValor(int fator) {
		System.out.println("Executando multiplicaValor. Variaveis:\n Local: fator: "
			+ fator + "\nInstancia: valor: " + this.valor); 
		return getValor() * valor;
	}
}
public class EscopoVariavel {
	public static void main(String[] args) {
		//Variável de referência da classe Modelo com nome "modelo"
		//Essa variável de referência foi apontada para um objeto no Acervo
		Modelo modelo = new Modelo();
		modelo.setValor(4);
	}
}
